CREATE PROCEDURE [dbo].[asi_DocumentImport]
@DocumentKey uniqueidentifier,
@DocumentName nvarchar(100),
@DocumentDescription nvarchar(250),
@DocumentVersionKey uniqueidentifier,
@DocumentTypeCode nvarchar(3),
@DocumentStatusCode int,
@DocumentCode nvarchar(100),
@AlternateName nvarchar(100),
@IsSystem bit,
@Blob image,
@AccessKey uniqueidentifier,
@DefaultChildAccessKey uniqueidentifier,
@ContainsChildrenFlag bit,
@BranchedFromDocumentKey uniqueidentifier,
@RelatedDocumentVersionKey uniqueidentifier,
@StatusUpdatedOn datetime,
@StatusUpdatedByUserKey uniqueidentifier,
@UpdatedOn datetime,
@UpdatedByUserKey uniqueidentifier,
@CreatedOn datetime,
@CreatedByUserKey uniqueidentifier,
@DefaultUserKey uniqueidentifier,
@DefaultAccessKey uniqueidentifier,
@Overwrite bit
AS
DECLARE
@check int, @currentDocumentStatusCode int, @lockedOn datetime, @trackVersionsFlag bit
BEGIN
SELECT @check = Count(*)
FROM UserMain
WHERE UserKey = @StatusUpdatedByUserKey
IF @check = 0 SET @StatusUpdatedByUserKey = @DefaultUserKey
SELECT @check = Count(*)
FROM UserMain
WHERE UserKey = @UpdatedByUserKey
IF @check = 0 SET @UpdatedByUserKey = @DefaultUserKey
SELECT @check = Count(*)
FROM UserMain
WHERE UserKey = @CreatedByUserKey
IF @check = 0 SET @CreatedByUserKey = @DefaultUserKey
SELECT @check = Count(*)
FROM AccessMain
WHERE AccessKey = @AccessKey
IF @check = 0 SET @AccessKey = @DefaultAccessKey
IF @DefaultChildAccessKey IS NOT NULL
BEGIN
SELECT @check = Count(*)
FROM AccessMain
WHERE AccessKey = @DefaultChildAccessKey
IF @check = 0 SET @DefaultChildAccessKey = null
END
IF @RelatedDocumentVersionKey IS NOT NULL
BEGIN
SELECT @check = Count(*)
FROM UniformRegistry
WHERE UniformKey = @RelatedDocumentVersionKey
IF @check = 0
BEGIN
RAISERROR ('Unable to import %s. Shortcut references a document that does not exist',11,1, @DocumentName)
RETURN
END
END
SELECT @trackVersionsFlag = TrackVersionsFlag
FROM DocumentTypeRef
WHERE DocumentTypeCode = @DocumentTypeCode
SELECT @currentDocumentStatusCode = DocumentStatusCode, @lockedOn = LockedOn
FROM DocumentMain
WHERE DocumentKey = @DocumentKey
IF @currentDocumentStatusCode IS NULL
BEGIN
INSERT INTO UniformRegistry (UniformKey, ComponentKey)
SELECT @DocumentKey, ComponentKey
FROM ComponentRegistry
WHERE Name = 'Document'
AND InterfaceName = 'BusinessController'
SELECT @check = Count(*)
FROM UniformRegistry
WHERE UniformKey = @DocumentVersionKey
IF @check = 0
INSERT INTO UniformRegistry (UniformKey, ComponentKey)
SELECT @DocumentVersionKey, ComponentKey
FROM ComponentRegistry
WHERE Name = 'DocumentVersion'
AND InterfaceName = 'BusinessController'
ELSE
BEGIN
IF (@DocumentStatusCode = 10 OR @DocumentStatusCode = 40) AND @trackVersionsFlag = 1
UPDATE DocumentMain
SET DocumentStatusCode = 50
WHERE DocumentVersionKey = @DocumentVersionKey
AND DocumentStatusCode = @DocumentStatusCode
END
INSERT INTO DocumentMain (
DocumentKey,
DocumentName,
DocumentDescription,
DocumentVersionKey,
DocumentTypeCode,
DocumentStatusCode,
DocumentCode,
AlternateName,
IsSystem,
Blob,
AccessKey,
DefaultChildAccessKey,
ContainsChildrenFlag,
BranchedFromDocumentKey,
RelatedDocumentVersionKey,
StatusUpdatedOn,
StatusUpdatedByUserKey,
UpdatedOn,
UpdatedByUserKey,
CreatedOn,
CreatedByUserKey)
VALUES (
@DocumentKey,
@DocumentName,
@DocumentDescription,
@DocumentVersionKey,
@DocumentTypeCode,
@DocumentStatusCode,
@DocumentCode,
@AlternateName,
@IsSystem,
@Blob,
@AccessKey,
@DefaultChildAccessKey,
@ContainsChildrenFlag,
@BranchedFromDocumentKey,
@RelatedDocumentVersionKey,
@StatusUpdatedOn,
@StatusUpdatedByUserKey,
@UpdatedOn,
@UpdatedByUserKey,
@CreatedOn,
@CreatedByUserKey)
END
ELSE
BEGIN
IF @Overwrite = 1
BEGIN
IF @currentDocumentStatusCode IN (20,30,60,70)
BEGIN
DECLARE @DocumentStatusDesc nvarchar(30)
SELECT @DocumentStatusDesc = DocumentStatusDesc FROM DocumentStatusRef WHERE DocumentStatusCode = @currentDocumentStatusCode
RAISERROR ('Unable to import %s. The exact version of the document already exists in the target database with a status of %s.',11,1, @DocumentName, @DocumentStatusDesc)
RETURN
END
IF @lockedOn IS NOT NULL
BEGIN
RAISERROR ('Unable to import %s. The exact version of the document already exists in the target database and is Locked for editing.',11,1, @DocumentName)
RETURN
END
IF @currentDocumentStatusCode <> @DocumentStatusCode AND @trackVersionsFlag = 1
BEGIN
IF @DocumentStatusCode = 40 AND @currentDocumentStatusCode = 10
UPDATE DocumentMain
SET DocumentStatusCode = 50
WHERE DocumentVersionKey = @DocumentVersionKey
AND DocumentStatusCode = @DocumentStatusCode
IF (@DocumentStatusCode = 10 AND @currentDocumentStatusCode IN (40,50)) OR
(@DocumentStatusCode = 40 AND @currentDocumentStatusCode = 50) OR
(@DocumentStatusCode = 50 AND @currentDocumentStatusCode = 40)
SET @DocumentStatusCode = @currentDocumentStatusCode
END
UPDATE DocumentMain
SET DocumentName = @DocumentName,
DocumentDescription = @DocumentDescription,
DocumentTypeCode = @DocumentTypeCode,
DocumentStatusCode = @DocumentStatusCode,
DocumentCode = @DocumentCode,
AlternateName = @AlternateName,
IsSystem = @IsSystem,
Blob = @Blob,
DefaultChildAccessKey = @DefaultChildAccessKey,
ContainsChildrenFlag = @ContainsChildrenFlag,
BranchedFromDocumentKey = @BranchedFromDocumentKey,
RelatedDocumentVersionKey = @RelatedDocumentVersionKey,
StatusUpdatedOn = @StatusUpdatedOn,
StatusUpdatedByUserKey = @StatusUpdatedByUserKey,
UpdatedOn = @UpdatedOn,
UpdatedByUserKey = @UpdatedByUserKey
WHERE DocumentKey = @DocumentKey
END
END
SELECT @DocumentKey
END
GO